#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n, k; // n为武器个数，k为怪兽的致命点
    cin >> n >> k;
    // 输入ai个武器的伤害值
    vector<long long> damage(n+1, 0);
    // 定义一个容器存储余数
    vector<int> left(n + 1);
    vector<long long> sum(n + 1, 0);
    // 创建一个桶，将相同的余数放在一起
    vector<int> ans(k);
    ans[0] = 1; // 注意ans[0]初始值为1，因为余数为零，本身也可以整除k
    for (int i = 1; i <= n; i++)
    {
        cin>>damage[i];
        // 求前缀和，取前缀和%k的余数
        sum[i] = damage[i] + sum[i - 1];
        left[i] = sum[i] % k;
        ans[left[i]]++;
    }
    // 计算总数
    int result = 0;
    for (int i = 0; i < k; i++)
    {
        if (ans[i] > 1)
        {
            result += ans[i] * (ans[i] - 1) / 2;
        }
    }
    cout << result << endl;

    return 0;
}